package com.it.you.service.pay;

import org.springframework.stereotype.Service;

/**
 * 这种方式也是用于code是有业务含义的场景。
 * <p>
 * 策略模式：定义了一组算法，把它们一个个封装起来, 并且使它们可相互替换。
 * 工厂模式：用于封装和管理对象的创建，是一种创建型模式。
 * PayStrategyFactory类，它是一个策略工厂，里面定义了一个全局的map，
 * 在所有IPay的实现类中注册当前实例到map中，然后在调用的地方通过PayStrategyFactory类根据code从map获取支付类实例即可。
 */

@Service
public class PayService5 {

    public String pay(String code) {
        return PayStrategyFactory.get(code).pay();
    }

}
